'use strict';

const Controller = require('egg').Controller;

class CommentController extends Controller {
  async save() {
    // 结构
    let {ctx,app}=this
    let user_id=ctx.authUser.id
    // 参数验证
    ctx.validate({
        content:{
            type:'string',
            desc:'评论内容',
            required:true
        },
        video_id:{
            type:'int',
            required:true,
            desc:'视频ID'
        },
        reply_id:{
            type:'int',
            required:true,
            desc:'回复ID'
        },
        reply_user_id:{
            type:'int',
            required:true,
            desc:'回复用户ID'
        }
    })
    // 获取参数
    let {video_id,content,reply_id,reply_user_id}=ctx.request.body
    // 判断回复评论id是否大于零
    if(reply_id>0){
        // 大于0判断--判断用户回复的reply_user_id 是否大于零--判断评论是否存在
        if(reply_user_id===0){
           return ctx.apiFail('评论用户不存在')
        }
        let c=await app.model.Comment.findOne({
            where:{
                id:reply_id
            }
        })
        if(!c){
            return ctx.apiFail('评论内容不存在')
        }
    }
    // 判断视频是否存在
    let video =await app.model.Video.findOne({
        where:{
            id:video_id
        }
    })
    if(!video){
        return ctx.apiFail('评论视频不存在')
    }

    // 创建评论
   let res= await app.model.Comment.create({video_id,content,reply_id,reply_user_id,user_id})
    // 返回数据
    ctx.apiSuccess(res)
  }

  // 获取视频评论列表
  async comment(){
    //  结构
    let {ctx,app}=this
    // 获取用户id

    // 参数验证
    ctx.validate({
        id:{
            type:'int',
            required:true,
            desc:'视频id'
        }    
    })
    let {id}=ctx.params
    // 通过视频id获取对应的评论--做好模型关联
    let comment=await app.model.Comment.findAll({
        where:{
            video_id:id,
            reply_id:0  //有一个疑问？为什么是0
        },
        include:[
            {
                model:app.model.User,
                as:'send_user',
                attributes: ['id', 'username', 'nickname', 'avatar'],
            },
            {
                model:app.model.User,
                as:'reply_user',
                attributes: ['id', 'username', 'nickname', 'avatar'],
            },
            {
                model:app.model.Comment,
                include:[
                    {
                        model:app.model.User,
                        as:'send_user',
                        attributes: ['id', 'username', 'nickname', 'avatar'],
                    },
                    {
                        model:app.model.User,
                        as:'reply_user',
                        attributes: ['id', 'username', 'nickname', 'avatar'],
                    },
                ]
            }
        ]
    })
    // 返回数据
    ctx.apiSuccess(comment)
  }   
}

module.exports = CommentController;
